package com.zenith.api.po.vo.article;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 文章VO
 */
@Data
@Schema(name = "ArtArticleVO", description = "文章VO")
public class ArtArticleVO {

    @Schema(description = "主键ID")
    private Long id;

    @Schema(description = "文章标题")
    private String title;

    @Schema(description = "副标题")
    private String subTitle;

    @Schema(description = "作者用户ID")
    private Long authorId;

    @Schema(description = "所属分类ID")
    private Long categoryId;

    @Schema(description = "所属专题ID")
    private Long topicId;

    @Schema(description = "文档类型：1-富文本 2-Markdown 3-协同文档")
    private Integer docType;

    @Schema(description = "协同编辑Token")
    private String editorToken;

    @Schema(description = "文章摘要")
    private String summary;

    @Schema(description = "封面图URL")
    private String coverUrl;

    @Schema(description = "正文内容OSS地址")
    private String contentUrl;

    @Schema(description = "字数")
    private Integer wordCount;

    @Schema(description = "阅读量")
    private Long readCount;

    @Schema(description = "点赞量")
    private Long likeCount;

    @Schema(description = "收藏量")
    private Long collectCount;

    @Schema(description = "评论数")
    private Long commentCount;

    @Schema(description = "分享量")
    private Long shareCount;

    @Schema(description = "是否原创：1-是 0-否")
    private Integer isOriginal;

    @Schema(description = "是否置顶：1-是 0-否")
    private Integer isTop;

    @Schema(description = "是否精华：1-是 0-否")
    private Integer isElite;

    @Schema(description = "阅读级别：0-普通 1-会员 2-付费")
    private Integer level;

    @Schema(description = "付费金额（元）")
    private BigDecimal price;

    @Schema(description = "综合评分")
    private BigDecimal score;

    @Schema(description = "SEO标题")
    private String seoTitle;

    @Schema(description = "SEO关键词")
    private String seoKeywords;

    @Schema(description = "SEO描述")
    private String seoDescription;

    @Schema(description = "发布时间")
    private LocalDateTime publishTime;

    @Schema(description = "下线时间")
    private LocalDateTime offlineTime;

    @Schema(description = "文章状态：0-草稿 1-已发布 2-下线 3-撤回 4-定时发布")
    private Integer status;

    @Schema(description = "扩展信息（JSON）")
    private String extJson;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
}